package util.AST.Comando;

import java.util.ArrayList;

import checker.SemanticException;
import checker.Visitor;

import util.AST.Terminal.Valor;

public class Print extends ComandoSimples{
	
	private String tipo;
	private ArrayList<Valor> valores;
	private Valor valor;
	
	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public ArrayList<Valor> getValores() {
		return valores;
	}

	public void setValores(ArrayList<Valor> valores) {
		this.valores = valores;
	}

	public Valor getValor() {
		return valor;
	}

	public void setValor(Valor valor) {
		this.valor = valor;
	}

	public Print(ArrayList<Valor> valores, Valor valor, String tipo){
		this.valores = valores;
		this.valor = valor;
		this.tipo = tipo;
	}
	
	@Override
	public String toString(int level) {
		int nextLevel = level+5;
		StringBuffer string = new StringBuffer();
		string.append("print\n");
		string.append(super.getSpaces(nextLevel) + "|-");
		if(this.valores != null){
			for(Valor valor:this.valores){
				string.append(valor.toString(nextLevel) + " ");
			}
		}else if(this.valor != null){
			string.append(super.getSpaces(nextLevel) + " ");
		}
		return string.toString();
	}

	@Override
	public Object visit(Visitor v, Object o) throws SemanticException {
		return v.visitPrint(this, o);
	}
	
}
